;Macro to convert integer %2 to hexstring %1 destroy R0,R1,R2,R3,R4
 
 .MACRO int2hexstringmacro2
  GO \hupf
\buffer .BLOCK 9.
 .ALIGN
\hupf
  ADR R4,\buffer
  MOV R2,#8. 
  MOV R0,R1
  MOV R1,R4
  mySWI XOS_ConvertHex8
  MOV %1,R4
 .ENDM

 .MACRO regprint1
  MOV R1,%1
  B \jump
\string
  .STRING "  %1 = "
  .ALIGN
\jump
  ADR R0,\string
  mySWI XOS_Write0
  int2hexstringmacro2 R0,R1
  mySWI XOS_Write0
 .ENDM 

 .MACRO regprint2
  MOV R1,%1
  B \jump
\string
  .STRING " %1 = "
  .ALIGN
\jump
  ADR R0,\string
  mySWI XOS_Write0
  int2hexstringmacro2 R0,R1
  mySWI XOS_Write0
 .ENDM 

 .MACRO reg
  STR R0,\temp0
  STR R13,\temp1
  STR R14,\temp2
  B \jump
\string
  .STRING %2
  .ALIGN
\jump
  ADR R0,\string
  mySWI XOS_Write0
  cr
  B \hupf
\temp0
 .WORD 0
 .BLOCK 20.,0
\temp1
 .WORD 0
\temp2 
 .WORD 0
\hupf
  ADR R0,\temp1
  STMFD R0,{R1-R5}
  regprint1 %1
  cr
  ADDR R0,\temp0
  LDMFD R0,{R0-R5,R13,R14}
 .ENDM

 .MACRO regs
  STR R0,\temp0
  STR R13,\temp1
  STR R14,\temp2
  B \jump
\string
  .STRING %1
  .ALIGN
\jump
  ADR R0,\string
  mySWI XOS_Write0
  cr
  B \hupf
\temp0
 .WORD 0
 .BLOCK 20.,0
\temp1
 .WORD 0
\temp2
 .WORD 0
\hupf
  ADR R0,\temp1
  STMFD R0,{R1-R5}
  ADR R5,\temp0 
  LDR R0,[R5,#0.]
  regprint1 R0
  LDR R1,[R5,#4.]
  regprint1 R1
  LDR R2,[R5,#8.]
  regprint1 R2
  LDR R3,[R5,#12.]
  regprint1 R3
  cr
  LDR R4,[R5,#16.]
  regprint1 R4
  LDR R5,[R5,#20.]
  regprint1 R5
  ADR R5,\temp0 
  regprint1 R6
  regprint1 R7
  cr
  regprint1 R8
  regprint1 R9
  regprint2 R10
  regprint2 R11
  cr
  regprint2 R12
  LDR R13,[R5,#24.]
  regprint2 R13
  LDR R14,[R5,#28.]
  regprint2 R14
  regprint2 R15
  cr
  ADDR R0,\temp0
  LDMFD R0,{R0-R5,R13,R14}
 .ENDM

